Artificial neural networks are computing systems with an architecture based on biological neural networks. Artificial neural networks can be trained, using training data, to learn about how to perform a certain computing task.
A neural network may include a set of processing nodes. Each processing node can process a piece of the input data to generate an output, and the final decision can be generated based on a combination of the outputs of the set of processing nodes. As part of the processing, each processing node can perform a set of arithmetic operations such as, for example, floating-point multiplications and additions, etc. A neural network may be implemented by circuitries and data paths, such as a systolic array, which comprises an array of data processing units capable of performing concurrent arithmetic operations. The utilization rate of a systolic array, as well as the speed of processing, may depend on how the systolic array is mapped to the inputs and outputs of the neural network layer.